package com.dtx.mediator;

/**
 * Colleague接口是表示向中介者进行报告的组员的接口。具体的组员(ColleagueButton,ColleagueTextField,ColleagueCheckbox)
 * 会实现这个接口。
 * LoginFrame类(它实现了Mediator接口)首先会调用setMediator方法。该方法的作用是告知组员"我是中介者,有事情报告我"。
 * 向该方法中传递的参数是中介者的实例,之后在需要向中介者报告时(即调用colleagueChanged方法时)会用到该实例。
 * setColleagueEnabled方法的作用是告知组员中介者下达的指示。参数enabled如果为true,就表示自己需要变为"启用状态";
 * 如果是false,则表示自己需要变为"禁用状态"。这个方法表明,究竟是变为"启用状态"还是变为"禁用状态",并非由组员自己决定,而是
 * 由中介者决定。
 * 此外需要说明的是,关于Mediator接口和Colleague接口中究竟需要定义哪些方法这一点,是根据需求不同而不同的。在示例程序中,
 * 我们在Mediator中定义了colleagueChanged方法,在Colleague接口中定义了setColleagueEnabled方法。如果需要让Mediator
 * 角色和Colleague角色之间进行更加详细的通信,还需要定义更多的方法。也就是说,即使两段程序都使用了Mediator模式,
 * 但它们实际定义的方法可能会不同。
 */
public interface Colleague {

    void setMediator(Mediator mediator);

    void setColleagueEnabled(boolean enabled);
}
